Skip to content

pcapplusplus: add run_tests.sh#13621

Merged
oliverchang merged 6 commits intomasterfrom
tests_PcapPlusPlus
Jul 22, 2025
Merged

pcapplusplus: add run_tests.sh#13621
oliverchang merged 6 commits intomasterfrom
tests_PcapPlusPlus

Conversation

@vitaliset
Copy link
Copy Markdown
Contributor

@vitaliset vitaliset commented Jul 13, 2025

Adds run_tests.sh to the pcapplusplus project.

run_tests.sh is used as part of Chronos with cached builds: https://github.com/google/oss-fuzz/tree/master/infra/experimental/chronos#check-tests

Output of ./infra/experimental/chronos/check_tests.sh pcapplusplus c++:

=== Packet++Test ===
PcapPlusPlus version: v25.05+ (non-official release)
Built: Jul 17 2025 06:03:15
Built from: Git branch 'master', commit '824ea14'
Disabling memory leak check in MSVC Release builds due to caching logic in stream objects that looks like a memory leak:
     https://github.com/cpputest/cpputest/issues/786#issuecomment-148921958
Skipping memory leak check for all test cases
Start running tests...

OUILookup                          : PASSED
EthPacketCreation                  : PASSED
EthPacketPointerCreation           : PASSED
EthAndArpPacketParsing             : PASSED
ArpPacketCreation                  : PASSED
EthDot3LayerParsingTest            : PASSED
EthDot3LayerCreateEditTest         : PASSED
VlanParseAndCreation               : PASSED
QinQ802_1adParse                   : PASSED
MplsLayerTest                      : PASSED
VxlanParsingAndCreationTest        : PASSED
IPv4PacketCreation                 : PASSED
IPv4PacketParsing                  : PASSED
IPv4FragmentationTest              : PASSED
IPv4OptionsParsingTest             : PASSED
IPv4OptionsEditTest                : PASSED
IPv4UdpChecksum                    : PASSED
IPv6UdpPacketParseAndCreate        : PASSED
IPv6FragmentationTest              : PASSED
IPv6ExtensionsTest                 : PASSED
TcpPacketNoOptionsParsing          : PASSED
TcpPacketWithOptionsParsing        : PASSED
TcpPacketWithOptionsParsing2       : PASSED
TcpPacketCreation                  : PASSED
TcpPacketCreation2                 : PASSED
TcpMalformedPacketParsing          : PASSED
TcpChecksumInvalidRead             : PASSED
TcpChecksumMultiBuffer             : PASSED
PacketUtilsHash5TupleUdp           : PASSED
PacketUtilsHash5TupleTcp           : PASSED
PacketUtilsHash5TupleIPv6          : PASSED
InsertDataToPacket                 : PASSED
CreatePacketFromBuffer             : PASSED
InsertVlanToPacket                 : PASSED
RemoveLayerTest                    : PASSED
CopyLayerAndPacketTest             : PASSED
PacketLayerLookupTest              : PASSED
RawPacketTimeStampSetterTest       : PASSED
ParsePartialPacketTest             : PASSED
PacketTrailerTest                  : PASSED
ResizeLayerTest                    : PASSED
PrintPacketAndLayersTest           : PASSED
ProtocolFamilyMembershipTest       : PASSED
PacketParseLayerLimitTest          : PASSED
HttpRequestParseMethodTest         : PASSED
HttpRequestLayerParsingTest        : PASSED
HttpRequestLayerCreationTest       : PASSED
HttpRequestLayerEditTest           : PASSED
HttpResponseParseStatusCodeTest    : PASSED
HttpResponseParseVersionTest       : PASSED
HttpResponseLayerParsingTest       : PASSED
HttpResponseLayerCreationTest      : PASSED
HttpResponseLayerEditTest          : PASSED
HttpMalformedResponseTest          : PASSED
PPPoESessionLayerParsingTest       : PASSED
PPPoESessionLayerCreationTest      : PASSED
PPPoEDiscoveryLayerParsingTest     : PASSED
PPPoEDiscoveryLayerCreateTest      : PASSED
DnsLayerParsingTest                : PASSED
DnsLayerQueryCreationTest          : PASSED
DnsLayerResourceCreationTest       : PASSED
DnsLayerEditTest                   : PASSED
DnsLayerRemoveResourceTest         : PASSED
DnsOverTcpParsingTest              : PASSED
DnsOverTcpCreationTest             : PASSED
DnsLayerAddDnsKeyTest              : PASSED
IcmpParsingTest                    : PASSED
IcmpCreationTest                   : PASSED
IcmpEditTest                       : PASSED
GreParsingTest                     : PASSED
GreCreationTest                    : PASSED
GreEditTest                        : PASSED
SSLClientHelloParsingTest          : PASSED
SSLExtensionWithZeroSizeTest       : PASSED
SSLAppDataParsingTest              : PASSED
SSLAlertParsingTest                : PASSED
SSLMultipleRecordParsingTest       : PASSED
SSLMultipleRecordParsing2Test      : PASSED
SSLMultipleRecordParsing3Test      : PASSED
SSLMultipleRecordParsing4Test      : PASSED
SSLMultipleRecordParsing5Test      : PASSED
SSLPartialCertificateParseTest     : PASSED
SSLNewSessionTicketParseTest       : PASSED
SSLMalformedPacketParsing          : PASSED
TLS1_3ParsingTest                  : PASSED
TLSCipherSuiteTest                 : PASSED
ClientHelloTLSFingerprintTest      : PASSED
ServerHelloTLSFingerprintTest      : PASSED
SllPacketParsingTest               : PASSED
SllPacketCreationTest              : PASSED
NullLoopbackTest                   : PASSED
Sll2PacketParsingTest              : PASSED
Sll2PacketCreationTest             : PASSED
NflogPacketParsingTest             : PASSED
DhcpParsingTest                    : PASSED
DhcpCreationTest                   : PASSED
DhcpEditTest                       : PASSED
IgmpParsingTest                    : PASSED
IgmpCreateAndEditTest              : PASSED
Igmpv3ParsingTest                  : PASSED
Igmpv3QueryCreateAndEditTest       : PASSED
Igmpv3ReportCreateAndEditTest      : PASSED
SipRequestParseMethodTest          : PASSED
SipRequestLayerParsingTest         : PASSED
SipRequestLayerCreationTest        : PASSED
SipRequestLayerEditTest            : PASSED
SipResponseParseStatusCodeTest     : PASSED
SipResponseParseVersionCodeTest    : PASSED
SipResponseLayerParsingTest        : PASSED
SipResponseLayerCreationTest       : PASSED
SipResponseLayerEditTest           : PASSED
SipNotSdpLayerParsingTest          : PASSED
SdpLayerParsingTest                : PASSED
SdpLayerCreationTest               : PASSED
SdpLayerEditTest                   : PASSED
RadiusLayerParsingTest             : PASSED
RadiusLayerCreationTest            : PASSED
RadiusLayerEditTest                : PASSED
GtpV1LayerParsingTest              : PASSED
GtpV1LayerCreationTest             : PASSED
GtpV1LayerEditTest                 : PASSED
GtpV2LayerParsingTest              : PASSED
GtpV2LayerCreationTest             : PASSED
GtpV2LayerEditTest                 : PASSED
BgpLayerParsingTest                : PASSED
BgpLayerCreationTest               : PASSED
BgpLayerEditTest                   : PASSED
SSHParsingTest                     : PASSED
SSHMalformedParsingTest            : PASSED
IPSecParsingTest                   : PASSED
DhcpV6ParsingTest                  : PASSED
DhcpV6CreationTest                 : PASSED
DhcpV6EditTest                     : PASSED
NtpMethodsTests                    : PASSED
NtpParsingV3Tests                  : PASSED
NtpParsingV4Tests                  : PASSED
NtpCreationTests                   : PASSED
TelnetCommandParsingTests          : PASSED
TelnetDataParsingTests             : PASSED
TpktLayerTest                      : PASSED
IcmpV6ParsingTest                  : PASSED
IcmpV6CreationTest                 : PASSED
IcmpV6EditTest                     : PASSED
FtpParsingTests                    : PASSED
FtpCreationTests                   : PASSED
FtpEditTests                       : PASSED
LLCParsingTests                    : PASSED
LLCCreationTests                   : PASSED
StpConfigurationParsingTests       : PASSED
StpConfigurationCreationTests      : PASSED
StpConfigurationEditTests          : PASSED
StpTopologyChangeParsingTests      : PASSED
StpTopologyChangeCreationTests     : PASSED
StpTopologyChangeEditTests         : PASSED
RapidStpParsingTests               : PASSED
RapidStpCreationTests              : PASSED
RapidStpEditTests                  : PASSED
MultipleStpParsingTests            : PASSED
MultipleStpCreationTests           : PASSED
MultipleStpEditTests               : PASSED
SomeIpPortTest                     : PASSED
SomeIpParsingTest                  : PASSED
SomeIpCreationTest                 : PASSED
SomeIpTpParsingTest                : PASSED
SomeIpTpCreationTest               : PASSED
SomeIpTpEditTest                   : PASSED
SomeIpSdParsingTest                : PASSED
SomeIpSdCreationTest               : PASSED
WakeOnLanParsingTests              : PASSED
WakeOnLanCreationTests             : PASSED
WakeOnLanEditTests                 : PASSED
VrrpParsingTest                    : PASSED
CotpLayerTest                      : PASSED
S7CommLayerParsingTest             : PASSED
S7CommLayerCreationTest            : PASSED
SmtpParsingTests                   : PASSED
SmtpCreationTests                  : PASSED
SmtpEditTests                      : PASSED
Asn1DecodingTest                   : PASSED
Asn1EncodingTest                   : PASSED
Asn1ObjectIdentifierTest           : PASSED
LdapParsingTest                    : PASSED
LdapCreationTest                   : PASSED
WireGuardHandshakeInitParsingTest  : PASSED
WireGuardHandshakeRespParsingTest  : PASSED
WireGuardCookieReplyParsingTest    : PASSED
WireGuardTransportDataParsingTest  : PASSED
WireGuardCreationTest              : PASSED
WireGuardEditTest                  : PASSED
CiscoHdlcParsingTest               : PASSED
CiscoHdlcLayerCreationTest         : PASSED
CiscoHdlcLayerEditTest             : PASSED

ALL TESTS PASSED!!
Test cases: 193, Passed: 192, Failed: 0, Skipped: 1
=== Pcap++Test (no networking) ===
Running only tests that don't require network connection
Disabling memory leak check in MSVC Release builds due to caching logic in stream objects that looks like a memory leak:
     https://github.com/cpputest/cpputest/issues/786#issuecomment-148921958
Skipping memory leak check for all test cases
PcapPlusPlus version: v25.05+ (non-official release)
Built: Jul 17 2025 06:03:15
Git info: Git branch 'master', commit '824ea14'
Using ip: 
Debug mode: off
Start running tests...

TestIPAddress                      : PASSED
TestLRUList                        : PASSED
TestGeneralUtils                   : PASSED
TestIPv4Network                    : PASSED
TestIPv6Network                    : PASSED
TestIPNetwork                      : PASSED
TestObjectPool                     : PASSED
[DEBUG: LoggerTests.cpp: invokeDebugLog:16           ] debug log
[ERROR: LoggerTests.cpp: invokeErrorLog:21           ] error log
TestLogger                         : PASSED
TestLoggerMultiThread              : PASSED
TestPcapFileReadWrite              : PASSED
TestPcapFilePrecision              : PASSED
TestPcapSllFileReadWrite           : PASSED
TestPcapSll2FileReadWrite          : PASSED
TestPcapRawIPFileReadWrite         : PASSED
TestPcapFileAppend                 : PASSED
TestPcapNgFileReadWrite            : PASSED
TestPcapNgFileReadWriteAdv         : PASSED
TestPcapNgFileTooManyInterfaces    : PASSED
TestPcapNgFilePrecision            : PASSED
TestPcapFileReadLinkTypeIPv6       : PASSED
TestPcapFileReadLinkTypeIPv4       : PASSED
TestSolarisSnoopFileRead           : PASSED
TestPcapFileWriterDeviceDestructor : PASSED
TestPcapFilters_MatchStatic        : PASSED
TestPcapFilters_General_BPFStr     : PASSED
TestPcapFiltersOffline             : PASSED
TestPcapFilters_LinkLayer          : PASSED
TestHttpRequestParsing             : PASSED
TestHttpResponseParsing            : PASSED
TestPrintPacketAndLayers           : PASSED
TestDnsParsing                     : PASSED
TestTcpReassemblySanity            : PASSED
TestTcpReassemblyOutOfOrder        : PASSED
TestTcpReassemblyOOOWithManualClose: PASSED
TestTcpReassemblyWithFIN_RST       : PASSED
TestTcpReassemblyMalformedPkts     : PASSED
TestTcpReassemblyMultipleConns     : PASSED
TestTcpReassemblyIPv6              : PASSED
TestTcpReassemblyIPv6MultConns     : PASSED
TestTcpReassemblyIPv6_OOO          : PASSED
TestTcpReassemblyCleanup           : PASSED
TestTcpReassemblyMaxOOOFrags       : PASSED
TestTcpReassemblyMaxSeq            : PASSED
TestTcpReassemblyDisableOOOCleanup : PASSED
TestTcpReassemblyTimeStamps        : PASSED
TestTcpReassemblyFinReset          : PASSED
TestTcpReassemblyHighPrecision     : PASSED
TestIPFragmentationSanity          : PASSED
TestIPFragOutOfOrder               : PASSED
TestIPFragPartialData              : PASSED
TestIPFragMultipleFrags            : PASSED
TestIPFragMapOverflow              : PASSED
TestIPFragRemove                   : PASSED
TestIPFragWithPadding              : PASSED
TestIPv4MalformedFragment          : PASSED
TestSystemCoreUtils                : PASSED

ALL TESTS PASSED!!
Test cases: 96, Passed: 56, Failed: 0, Skipped: 40
--------------------------------------------------------
Total time taken to replay tests: 157

@github-actions
Copy link
Copy Markdown

vitaliset is a new contributor to projects/pcapplusplus. The PR must be approved by known contributors before it can be merged. The past contributors are: maflcko, egecetin, clementperon, sashashura, DonggeLiu, cvediver, zlowram

@vitaliset
Copy link
Copy Markdown
Contributor Author

I couldn’t quite figure out how to proceed here. Any suggestions would be appreciated! 🙏
@oliverchang, @DavidKorczynski @AdamKorcz

@vitaliset vitaliset marked this pull request as draft July 13, 2025 23:04
@oliverchang
Copy link
Copy Markdown
Collaborator

I couldn’t quite figure out how to proceed here. Any suggestions would be appreciated! 🙏 @oliverchang, @DavidKorczynski @AdamKorcz

Does Packet++Test have any kind of filtering to disable these tests for now?

@vitaliset
Copy link
Copy Markdown
Contributor Author

Does Packet++Test have any kind of filtering to disable these tests for now?

Yes. Done that. PTAL.

@vitaliset vitaliset marked this pull request as ready for review July 17, 2025 04:52
@vitaliset vitaliset requested a review from oliverchang July 17, 2025 04:52
Comment thread projects/pcapplusplus/run_tests.sh Outdated
echo "=== Packet++Test ==="
cd "$ROOT/Tests/Packet++Test"
# TODO: Skipping failing tests.
./Bin/Packet++Test -x "VrrpCreateAndEditTest;TestMacAddress;TestTcpReassemblyRetran"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't have network atm in our environment for running tests. Should we just disable these if these will fail otherwise?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if I understood. They are passing without any -n (no networking) flag. I assume they are ok (?).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You were right! :) Ran again the ./infra/experimental/chronos/check_tests.sh script adding a --network none to the test docker run and I can confirm that some tests failed. Adding them to the skip list and updating the comment there.

@oliverchang
Copy link
Copy Markdown
Collaborator

Is this ready to merge?

@vitaliset
Copy link
Copy Markdown
Contributor Author

vitaliset commented Jul 21, 2025

Is this ready to merge?

Yes. CI is green now. :) PTAL at the updated patch you suggested to fix the linking error:

[100%] Linking CXX executable /src/PcapPlusPlus/Tests/Packet++Test/Bin/Packet++Test
/usr/bin/ld: /usr/bin/ld: DWARF error: invalid or unhandled FORM value: 0x25
../../3rdParty/MemPlumber/MemPlumber/libmemplumber.a(memplumber.cpp.o): in function `operator new[](unsigned long)':
memplumber.cpp:(.text._Znam[_Znam]+0x0): multiple definition of `operator new[](unsigned long)'; /usr/bin/ld: DWARF error: invalid or unhandled FORM value: 0x25

@oliverchang oliverchang merged commit 6793894 into master Jul 22, 2025
15 checks passed
@oliverchang oliverchang deleted the tests_PcapPlusPlus branch July 22, 2025 02:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants